#Boa:Dialog:AtualizarEstoque

import wx

def create(parent):
    return AtualizarEstoque(parent)

[wxID_ATUALIZARESTOQUE, wxID_ATUALIZARESTOQUEATUALIZACAO, 
 wxID_ATUALIZARESTOQUEBUTTON2, wxID_ATUALIZARESTOQUELISTCTRL1, 
 wxID_ATUALIZARESTOQUEOKBUTTOM, wxID_ATUALIZARESTOQUEPANEL1, 
 wxID_ATUALIZARESTOQUEQTDATUALTXT, wxID_ATUALIZARESTOQUESALVAR, 
 wxID_ATUALIZARESTOQUESPINCTRL_ATUALIZACAO, 
 wxID_ATUALIZARESTOQUESTATICBITMAP1, wxID_ATUALIZARESTOQUESTATICBOX1, 
 wxID_ATUALIZARESTOQUESTATICBOX_PRODUTO, wxID_ATUALIZARESTOQUESTATICLINE1, 
 wxID_ATUALIZARESTOQUESTATICLINE2, wxID_ATUALIZARESTOQUESTATICLINE3, 
 wxID_ATUALIZARESTOQUESTATICTEXT1, wxID_ATUALIZARESTOQUETEXTCTRL_QTDATUAL, 
 wxID_ATUALIZARESTOQUETEXTCTRL_QTDFINAL, 
] = [wx.NewId() for _init_ctrls in range(18)]

class AtualizarEstoque(wx.Dialog):
    def _init_coll_listCtrl1_Columns(self, parent):
        # generated method, don't edit

        parent.InsertColumn(col=0, format=wx.LIST_FORMAT_LEFT,
              heading=u'Produto', width=116)
        parent.InsertColumn(col=1, format=wx.LIST_FORMAT_LEFT,
              heading=u'Quantidade Atual', width=109)
        parent.InsertColumn(col=2, format=wx.LIST_FORMAT_LEFT,
              heading=u'Altera\xe7\xe3o', width=66)
        parent.InsertColumn(col=3, format=wx.LIST_FORMAT_LEFT,
              heading=u'Quantidade Final', width=105)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_ATUALIZARESTOQUE,
              name=u'AtualizarEstoque', parent=prnt, pos=wx.Point(353, 81),
              size=wx.Size(841, 636), style=wx.DEFAULT_DIALOG_STYLE,
              title=u'Atualizar Estoque')
        self.SetClientSize(wx.Size(833, 603))
        self.SetBackgroundColour(wx.Colour(255, 255, 255))

        self.panel1 = wx.Panel(id=wxID_ATUALIZARESTOQUEPANEL1, name='panel1',
              parent=self, pos=wx.Point(8, 8), size=wx.Size(432, 600),
              style=wx.TAB_TRAVERSAL)
        self.panel1.SetBackgroundColour(wx.Colour(255, 255, 255))

        self.textCtrl_QtdAtual = wx.TextCtrl(id=wxID_ATUALIZARESTOQUETEXTCTRL_QTDATUAL,
              name=u'textCtrl_QtdAtual', parent=self, pos=wx.Point(672, 240),
              size=wx.Size(48, 21), style=0, value=u'')
        self.textCtrl_QtdAtual.Enable(True)
        self.textCtrl_QtdAtual.SetEditable(False)

        self.staticBox1 = wx.StaticBox(id=wxID_ATUALIZARESTOQUESTATICBOX1,
              label=u'Atualizar Estoque', name='staticBox1', parent=self.panel1,
              pos=wx.Point(0, 0), size=wx.Size(432, 584), style=0)
        self.staticBox1.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.listCtrl1 = wx.ListCtrl(id=wxID_ATUALIZARESTOQUELISTCTRL1,
              name='listCtrl1', parent=self.panel1, pos=wx.Point(16, 32),
              size=wx.Size(400, 528), style=wx.LC_REPORT)
        self._init_coll_listCtrl1_Columns(self.listCtrl1)
        self.listCtrl1.Bind(wx.EVT_LIST_ITEM_SELECTED,
              self.OnListCtrl1ListItemSelected,
              id=wxID_ATUALIZARESTOQUELISTCTRL1)
        self.listCtrl1.Bind(wx.EVT_KILL_FOCUS, self.OnListCtrl1KillFocus)

        self.spinCtrl_Atualizacao = wx.SpinCtrl(id=wxID_ATUALIZARESTOQUESPINCTRL_ATUALIZACAO,
              initial=0, max=100, min=0, name=u'spinCtrl_Atualizacao',
              parent=self, pos=wx.Point(672, 280), size=wx.Size(64, 21),
              style=wx.SP_ARROW_KEYS)
        self.spinCtrl_Atualizacao.SetRange(-500, 500)
        self.spinCtrl_Atualizacao.Bind(wx.EVT_SPIN,
              self.OnSpinCtrl_AtualizacaoSpin,
              id=wxID_ATUALIZARESTOQUESPINCTRL_ATUALIZACAO)

        self.textCtrl_QtdFinal = wx.TextCtrl(id=wxID_ATUALIZARESTOQUETEXTCTRL_QTDFINAL,
              name=u'textCtrl_QtdFinal', parent=self, pos=wx.Point(672, 344),
              size=wx.Size(48, 21), style=0, value=u'')
        self.textCtrl_QtdFinal.SetEditable(False)
        self.textCtrl_QtdFinal.Enable(True)

        self.okButtom = wx.Button(id=wxID_ATUALIZARESTOQUEOKBUTTOM, label=u'Ok',
              name=u'okButtom', parent=self, pos=wx.Point(600, 392),
              size=wx.Size(64, 24), style=0)
        self.okButtom.Bind(wx.EVT_BUTTON, self.OnOkButtomButton,
              id=wxID_ATUALIZARESTOQUEOKBUTTOM)
        self.okButtom.Bind(wx.EVT_KILL_FOCUS, self.OnOkButtomKillFocus)

        self.staticBox_Produto = wx.StaticBox(id=wxID_ATUALIZARESTOQUESTATICBOX_PRODUTO,
              label=u'<Nome do Produto>', name=u'staticBox_Produto',
              parent=self, pos=wx.Point(464, 200), size=wx.Size(344, 232),
              style=0)
        self.staticBox_Produto.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL,
              wx.NORMAL, False, u'Tahoma'))

        self.staticLine2 = wx.StaticLine(id=wxID_ATUALIZARESTOQUESTATICLINE2,
              name='staticLine2', parent=self, pos=wx.Point(456, 192),
              size=wx.Size(352, 2), style=0)

        self.qtdAtualTxt = wx.StaticText(id=wxID_ATUALIZARESTOQUEQTDATUALTXT,
              label=u'Quantidade Atual', name=u'qtdAtualTxt', parent=self,
              pos=wx.Point(488, 240), size=wx.Size(98, 16), style=0)
        self.qtdAtualTxt.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.atualizacao = wx.StaticText(id=wxID_ATUALIZARESTOQUEATUALIZACAO,
              label=u'Atualiza\xe7\xe3o', name=u'atualizacao', parent=self,
              pos=wx.Point(504, 280), size=wx.Size(65, 16), style=0)
        self.atualizacao.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.staticLine3 = wx.StaticLine(id=wxID_ATUALIZARESTOQUESTATICLINE3,
              name='staticLine3', parent=self, pos=wx.Point(632, 328),
              size=wx.Size(136, 2), style=0)

        self.staticText1 = wx.StaticText(id=wxID_ATUALIZARESTOQUESTATICTEXT1,
              label=u'Quantidade Final', name='staticText1', parent=self,
              pos=wx.Point(488, 344), size=wx.Size(106, 16), style=0)
        self.staticText1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.salvar = wx.Button(id=wxID_ATUALIZARESTOQUESALVAR,
              label=u'Salvar Altera\xe7\xf5es', name=u'salvar', parent=self,
              pos=wx.Point(480, 480), size=wx.Size(136, 48), style=0)
        self.salvar.Bind(wx.EVT_BUTTON, self.OnSalvarButton,
              id=wxID_ATUALIZARESTOQUESALVAR)

        self.button2 = wx.Button(id=wxID_ATUALIZARESTOQUEBUTTON2,
              label=u'Cancelar', name='button2', parent=self, pos=wx.Point(664,
              480), size=wx.Size(128, 48), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button,
              id=wxID_ATUALIZARESTOQUEBUTTON2)

        self.staticLine1 = wx.StaticLine(id=wxID_ATUALIZARESTOQUESTATICLINE1,
              name='staticLine1', parent=self, pos=wx.Point(489, 384),
              size=wx.Size(303, 2), style=0)

        self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.Bitmap(u'Imagens/Logo attEstoque.jpg',
              wx.BITMAP_TYPE_JPEG), id=wxID_ATUALIZARESTOQUESTATICBITMAP1,
              name='staticBitmap1', parent=self, pos=wx.Point(448, 32),
              size=wx.Size(376, 131), style=0)

    def __init__(self, parent):
        from Class_ControleEstoque import *
        self._init_ctrls(parent)
        self.controle = ControleEstoque()
        
        self.listaProdutos = self.controle.PesquisarProdutoNome('')
        self.listaAtualizacoes = [0] * len(self.listaProdutos)
        
        self.PreencherTabela(self.listaProdutos)
        
    
#Metodo que Preenche a tabela com os nomes e precos dos produtos pesquisados
    def PreencherTabela(self, ListaProdutos):
        import sys
        lista = self.listCtrl1
        
        #Deleta todos os item da tabela
        lista.DeleteAllItems()
        
        if ListaProdutos <> False:
            #Pega os dados de cada Produto e joga na tabela
            for i in range( len(ListaProdutos)):
                
                index = lista.InsertStringItem(sys.maxint, '0')
                #altera a cor de fundo das linhas para alternar entre cinza e branco
                if (float(index) / 2).is_integer() == False:
                    self.listCtrl1.SetItemBackgroundColour(index, (230, 230, 230))
                
                lista.SetStringItem(index, 0, str(ListaProdutos[i].GetNome()))
                lista.SetStringItem(index, 1, str(ListaProdutos[i].GetQtd()))
                lista.SetStringItem(index, 2, str(self.listaAtualizacoes[i]))
                lista.SetStringItem(index, 3, str(int(ListaProdutos[i].GetQtd()) + self.listaAtualizacoes[i]))

#botao cancelar
    def OnButton2Button(self, event):
        self.Close()

#Selecionar item da Lista
    def OnListCtrl1ListItemSelected(self, event):
        
        #Descobre o Produto selecionado
        pos = self.listCtrl1.GetFocusedItem()
        self.ProdutoAtual =  self.listaProdutos[pos]
        
        self.staticBox_Produto.SetLabel(self.ProdutoAtual.GetNome())
        
        self.textCtrl_QtdAtual.SetValue(self.ProdutoAtual.GetQtd())
        
        self.spinCtrl_Atualizacao.SetValue(self.listaAtualizacoes[pos])
        
        self.textCtrl_QtdFinal.SetValue(str(int(self.ProdutoAtual.GetQtd()) +self.spinCtrl_Atualizacao.GetValue() ))
        
        
#Modificar valor SpinCtrl
    def OnSpinCtrl_AtualizacaoSpin(self, event):
        self.spinCtrl_Atualizacao.SetRange(- int(self.textCtrl_QtdAtual.GetValue()), 500)
        qtdFinal = int(self.textCtrl_QtdAtual.GetValue()) + self.spinCtrl_Atualizacao.GetValue()
        
        if (qtdFinal >= 0):
            self.textCtrl_QtdFinal.SetValue(str(qtdFinal))

#Botao OK
    def OnOkButtomButton(self, event):
        #Descobre o Produto selecionado
        pos = self.listCtrl1.GetFocusedItem()

        self.listaAtualizacoes[pos] = int(self.spinCtrl_Atualizacao.GetValue())
        self.PreencherTabela(self.listaProdutos)
        self.OnListCtrl1ListItemSelected(event)

    def OnSalvarButton(self, event):
        for i in range (len(self.listaProdutos)):
            produto = self.listaProdutos[i]
            novaQtd = self.listaAtualizacoes[i]

            
            if (self.listaAtualizacoes[i] >0):
                self.controle.AumentarQtdProduto(produto, novaQtd)
                
            else:
                self.controle.DiminuirQtdProduto(produto, -novaQtd)
                
        self.Close()

    def OnListCtrl1KillFocus(self, event):
        self.textCtrl_QtdAtual.SetFocus()

    def OnOkButtomKillFocus(self, event):
        pos = self.listCtrl1.GetFocusedItem()
        self.listCtrl1.SetFocus()
